package com.med.mapper;



import com.med.entity.AppointmentDO;
import com.med.entity.DepartmentDO;
import com.med.entity.DoctorDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface AppointmentMapper {

    //查部门
    List<DepartmentDO> queryDepartment();

    //更据部门id查找出对应的医生
    List<DoctorDO> queryDoctor(@Param("subItemId") Integer subItemId);

    //根据医生的id查询对应的可预约时间
    List<AppointmentDO> queryAppointment(@Param("doctorId") Integer doctorId);

    /**
     * 根据预约ID查询预约信息
     * @param appointmentId 预约ID
     * @return 预约信息对象
     */
    AppointmentDO queryById(Integer appointmentId);

    /**
     * 更新预约状态和关联用户ID
     * @param appointmentId 预约ID
     * @param userId 预约用户ID
     * @param status 目标状态（1：已预约未支付；2：已支付等）
     * @return 受影响的行数（1表示更新成功，0表示更新失败）
     */
    int updateStatus(@Param("appointmentId")Integer appointmentId,@Param("userId") Integer userId,@Param("status") Integer status);

    /**
     * 释放预约（状态改回可预约，清空用户ID）
     * @param appointmentId 预约ID
     * @return 受影响的行数
     */
    int releaseAppointment(Integer appointmentId);
}
